package com.dalin.platform.autocode.service;

import java.util.List;

import com.dalin.common.clazz.Clazz;
import com.dalin.common.clazz.Interfazz;
import com.dalin.common.clazz.Method;
import com.dalin.common.clazz.PropertyList;
import com.dalin.common.pager.PageInfo;
import com.dalin.framework.service.FrameService;
import com.dalin.platform.autocode.condition.GlbDicTypeRepositoryCondition;
import com.dalin.platform.autocode.condition.GlbGeneratorKeyCondition;
import com.dalin.platform.autocode.condition.GlbGridHeaderCondition;
import com.dalin.platform.autocode.vo.EditMenuTreeVo;
import com.dalin.platform.autocode.vo.GlbDicItemRepositoryTreeVo;
import com.dalin.platform.autocode.vo.GlbDicTypeRepositoryVo;
import com.dalin.platform.autocode.vo.GlbGeneratorKeyVo;
import com.dalin.platform.autocode.vo.GlbGridHeaderVo;

/*****************************************************************************
 * @content: 系统设置等通用接口                                                                                                             *
 * @author : 那建林                                                                                                                                 *
 * @crtDate: 2010-05-12                                                     *
 ****************************************************************************/
public interface AutocodeService extends FrameService {
	/*************************************************************************
	 * @content: 先根据ids删除记录，然后再根据LoaMenuTreeVo中的id判断是新增还是更改
	 * @param  : LoaMenuTreeVo List
	 * @param  : 删除数组
	 * @throws : java.lang.Exception
	 * @author : 那建林
	 * @crtDate: 2010-07-06
	 * @crtDate: 2010-07-06
	 */
	void addUpDelMenus(List<EditMenuTreeVo> treeList, Long[] delIdArray) throws Exception;
	
	
	
	
	
	 /*************************************************************************
     * @content: 方法注释信息
     * @param  : GlbGeneratorKeyCondition cond
     * @return : PageInfo
     * @author : 那建林
     * @crtDate: 2010-06-18
     * @modDate: 2010-06-18
     */
    PageInfo queryGlbGeneratorKeys(GlbGeneratorKeyCondition cond) throws Exception;

    /*************************************************************************
     * @content: 方法注释信息
     * @param  : Long id
     * @return : GlbGeneratorKeyVo
     * @author : 那建林
     * @crtDate: 2010-06-18
     * @modDate: 2010-06-18
     */
    GlbGeneratorKeyVo findGlbGeneratorKeyById(Long id) throws Exception;

    /*************************************************************************
     * @content: 方法注释信息
     * @param  : GlbGeneratorKeyVo vo
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-06-18
     * @modDate: 2010-06-18
     */
    void addGlbGeneratorKey(GlbGeneratorKeyVo vo) throws Exception;

    /*************************************************************************
     * @content: 方法注释信息
     * @param  : GlbGeneratorKeyVo vo
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-06-18
     * @modDate: 2010-06-18
     */
    void modifyGlbGeneratorKey(GlbGeneratorKeyVo vo) throws Exception;

    /*************************************************************************
     * @content: 方法注释信息
     * @param  : Long[] idArray
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-06-18
     * @modDate: 2010-06-18
     */
    void delGlbGeneratorKeysByIds(Long[] idArray) throws Exception;
    
    
    
    
    /*************************************************************************
     * @content: 方法注释信息
     * @param  : GlbDicTypeRepositoryCondition cond
     * @return : PageInfo
     * @author : 那建林
     * @crtDate: 2010-07-12
     * @modDate: 2010-07-12
     */
    PageInfo queryGlbDicTypeRepositorys(GlbDicTypeRepositoryCondition cond) throws Exception;

    /*************************************************************************
     * @content: 方法注释信息
     * @param  : Long id
     * @return : GlbDicTypeRepositoryVo
     * @author : 那建林
     * @crtDate: 2010-07-12
     * @modDate: 2010-07-12
     */
    GlbDicTypeRepositoryVo findGlbDicTypeRepositoryById(Long id) throws Exception;

    /*************************************************************************
     * @content: 方法注释信息
     * @param  : GlbDicTypeRepositoryVo vo
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-07-12
     * @modDate: 2010-07-12
     */
    void addGlbDicTypeRepository(GlbDicTypeRepositoryVo vo) throws Exception;
    
    /*************************************************************************
     * @content: 方法注释信息
     * @param  : GlbDicTypeRepositoryVo vo
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-07-12
     * @modDate: 2010-07-12
     */
    void modifyGlbDicTypeRepository(GlbDicTypeRepositoryVo vo) throws Exception;

    /*************************************************************************
     * @content: 方法注释信息
     * @param  : Long[] idArray
     * @return : void
     * @author : 那建林
     * @crtDate: 2010-07-12
     * @modDate: 2010-07-12
     */
    void delGlbDicTypeRepositorysByIds(Long[] idArray) throws Exception;
    
    void addUpDelDicItemRepositorys(Long typeId, List<GlbDicItemRepositoryTreeVo> treeList, Long[] delIdArray) throws Exception;
    
    
    
    
    
    
    /*************************************************************************
     * @content: 方法注释信息
     * @param  : GlbGridHeaderCondition cond
     * @return : PageInfo
     * @author : 那建林
     * @crtDate: 2011-03-09 05:11:06
     * @modDate: 2011-03-09 05:11:06
     */
    PageInfo queryGlbGridHeaders(GlbGridHeaderCondition cond) throws Exception;

    /*************************************************************************
     * @content: 方法注释信息
     * @param  : Long id
     * @return : GlbGridHeaderVo
     * @author : 那建林
     * @crtDate: 2011-03-09 05:11:06
     * @modDate: 2011-03-09 05:11:06
     */
    GlbGridHeaderVo findGlbGridHeaderById(Long id) throws Exception;

    /*************************************************************************
     * @content: 方法注释信息
     * @param  : GlbGridHeaderVo vo
     * @return : void
     * @author : 那建林
     * @crtDate: 2011-03-09 05:11:06
     * @modDate: 2011-03-09 05:11:06
     */
    void addGlbGridHeader(GlbGridHeaderVo vo) throws Exception;

    /*************************************************************************
     * @content: 方法注释信息
     * @param  : GlbGridHeaderVo vo
     * @return : void
     * @author : 那建林
     * @crtDate: 2011-03-09 05:11:06
     * @modDate: 2011-03-09 05:11:06
     */
    void modifyGlbGridHeader(GlbGridHeaderVo vo) throws Exception;

    /*************************************************************************
     * @content: 方法注释信息
     * @param  : Long[] idArray
     * @return : void
     * @author : 那建林
     * @crtDate: 2011-03-09 05:11:06
     * @modDate: 2011-03-09 05:11:06
     */
    void delGlbGridHeadersByIds(Long[] idArray) throws Exception;

    
    
    
    
    
    
    
    
    /*************************************************************************
	 * @content: 根据属性生成它的get/set方法
	 * @param  : propList 属性集合
	 * @return : List<Method>
	 * @author : 那建林
	 * @crtDate: 2010-12-08 11:52:32
	 * @modDate: 2010-12-08 11:52:32
	 */
	List<Method> getGetSetMethodList(PropertyList propList);

	/*************************************************************************
	 * @content: 计算hashCode方法
	 * @param  : propList 属性集合
	 * @return : Method
	 * @author : 那建林
	 * @crtDate: 2010-12-08 14:10:28
	 * @modDate: 2010-12-08 14:10:28
	 */
	Method computeHashCodeMethod(Class c);
	Method computeHashCodeMethod(Clazz c);
	
	/*************************************************************************
	 * @content: 计算Equals方法
	 * @param  : propList 属性集合
	 * @return : Method
	 * @author : 那建林
	 * @crtDate: 2010-12-08 14:19:23
	 * @modDate: 2010-12-08 14:19:23
	 */
	Method computeEqualsMethod(Class c);
	Method computeEqualsMethod(Clazz c);
	
    /*************************************************************************
     * @content: 根据表名生成普通的映射javabean,属性及相应的get/set方法
     * @param  : tableId ETLtable表主键
     * @param  : packageName 包名
     * @return : Clazz
     * @author : 那建林
     * @crtDate: 2010-12-03 14:01:22
     * @modDate: 2010-12-03 14:01:22
     */
    Clazz getJavaClazz(Long tableId, String packageName) throws Exception;
    
    /*************************************************************************
	 * @content: 根据表名生成JPA注解映射bean
	 * @param  : tableId ETLtable表主键
     * @param  : packageName 包名
	 * @return : Clazz
	 * @author : 那建林                                   
	 * @crtDate: 2010-12-08 13:48:18  
	 * @modDate: 2010-12-08 13:48:18 
	 */
	Clazz getAnnotationClazz(Long tableId, String packageName) throws Exception;
	
	/*************************************************************************
	 * @content: 根据表名生成condition查询封装类
	 * @param  : tableId ETLtable表主键
     * @param  : packageName 包名
	 * @return : Clazz
	 * @author : 那建林                                   
	 * @crtDate: 2010-12-08 14:51:21
	 * @modDate: 2010-12-08 14:51:21
	 */
	Clazz getConditionClazz(Long tableId, String packageName) throws Exception;

	/*************************************************************************
	 * @content: 根据表名生成创建service接口类
	 * @param  : tableId ETLtable表主键
     * @param  : packageName 包名
	 * @return : Interfazz
	 * @author : 那建林                                   
	 * @crtDate: 2010-12-08 15:17:39 
	 * @modDate: 2010-12-08 15:17:39
	 */
	Interfazz getServiceInterfaceClazz(Long tableId,
			String packageName);

	/*************************************************************************
	 * @content: 根据表名生成创建service接口实现类
	 * @param  : tableId ETLtable表主键
     * @param  : packageName 包名
	 * @return : Clazz
	 * @author : 那建林                                   
	 * @crtDate: 2010-12-08 15:17:39 
	 * @modDate: 2010-12-08 15:17:39
	 */
	Clazz getServiceImpleClazz(Long tableId, String packageName) throws Exception;
	
	Clazz getAddModActionClazz(String serviceName, 
			Long tableId, String packageName) throws Exception;
	Clazz getDelActionClazz(String serviceName, 
			Long tableId, String packageName) throws Exception;
	Clazz getFindActionClazz(String serviceName, 
			Long tableId, String packageName) throws Exception;
	Clazz getQueryActionClazz(String serviceName, 
			Long tableId, String packageName) throws Exception;

	// jsp列表页面
	String getGridJspContent(Long tableId);
	// jsp添加页面
	String getAddModJspContent(Long tableId);
}
